/**
 * AD9172: ADI-AD9172-DAC,16位,1.2GHz宽带,1.54Gsps,x2通道
 */
#pragma once

#include <stdint.h>
#include "mcu.h"

// 表示寄存器参数结束
#define AD9172_REG_END 0xFFFFFFFF

/// @brief AD9172 统一驱动 数据结构
typedef struct _unidrv_ad9172 {
    // 使用的 SPI 接口
    mcu_spi_t *spi;    
    func_gpio_write_out_t nss; /// SPI 片选信号
    // IO 信号的驱动回调函数
    func_gpio_write_out_t rstn_out;
    func_gpio_write_out_t txen0_out;
    func_gpio_write_out_t txen1_out;
    // AD9172 对应的 JESD 接口初始化
    std_err_t (*jesd_init)();
} unidrv_ad9172_t;

/// @brief AD9172 初始化
/// @param regs 配置寄存器数组，每个表示一个寄存器配置指令(23~8位表示寄存器地址，7~0表示寄存器值)，最后一个为 0xFFFFFFFF 表示结束。
std_err_t unidrv_ad9172_init(unidrv_ad9172_t *dev, uint32_t *regs1, uint32_t *regs3, uint32_t *regs4, uint32_t *regs5, uint32_t *regs6, uint32_t *regscal);
